/*
* @author suhong
* @date 2022/5/16 14:36
* @file app.js
* @说明  入口文件
*/
//导入express模块
const express=require("express")
//导入用户登录注册路由模块
const userLoginRegister=require('./router/user/user')
//导入获取用户信息路由
const userInfo=require('./router/user/userInfo')
//导入获取文章路由
const article=require('./router/article/article')
//获取后台相关路由
const admin=require('./router/admin/index')
//设置跨域
const cors=require('cors')
//解析token的中间件
const jwt=require("express-jwt")
const config=require('./config/config')
const path=require("path")
// const formidableMiddleware = require('express-formidable');

//创建服务器
const app=express()
// app.use(formidableMiddleware());
app.use(express.static(path.join(__dirname, 'public')));

//注册cors为全局中间件
app.use(cors())
app.use(express.json())
app.use(express.urlencoded())
let multer = require('multer');//要先npm 下载 再引入
let dist = multer({dest:'./public/images'})//实例化 dest为接受文件的文件夹
app.use(dist.any())//安装实例 。any()接受任意文件

//使用.unless指定那些接口需要token认证
// app.use(jwt({secret:config.jwtKey,algorithms: ['HS256']}).unless({path:[/^\/api\//]}))
//错误中间件
app.use((req,res,next)=>{
   res.bug=function (err,status=1){
      return res.send(
            {
                status,
                message:err instanceof  Error?Error.message:err
            }
        )
    }
    next()
})
app.use('/api',userLoginRegister)
app.use('/user',userInfo)
//文章相关接口
app.use('/article',article)
//后台相关接口
app.use('/admin',admin)
//token错误
app.use((err,req,res,next)=>{
    if(err.status===401){
        return res.status(401).send("token失效了")
    }
})
app.listen(5000,()=>{
    console.log("服务器启动成功，端口号为5000")
})